// 公共的业务逻辑


// 配置基地址
axios.defaults.baseURL = 'https://hmajax.itheima.net';

// 封装轻提示
function showToast(msg) {
    // 获取提示标签结构
    const myToast = document.querySelector('.my-toast')
    // 实例化toast
    const dialog = new bootstrap.Toast(myToast)
    // 修改提示信息
    document.querySelector('.toast-body').innerHTML = msg
    // 显示轻提示
    dialog.show()
}

// 页面访问控制 (页面鉴权)
function checkLogin() {
    // 判断用户是否有权限访问页面 -> 权限 -> 通过token确定
    // 如果登录了就会有token 如果没有登录了就没有token
    // 如果没有token 去登录页进行登录
    const token = localStorage.getItem('token')
    if (!token) {
        setTimeout(()=>{
            location.href = 'login.html'
        },2000)
    }
}

// 退出登录业务
function logout() {
    const logout = document.querySelector('#logout')
    logout.addEventListener('click', function () {
        // 清空用户名
        localStorage.removeItem('user')
        // 清空token
        localStorage.removeItem('token')
        // 页面跳转
        setTimeout(()=>{
            location.href = 'login.html'
        },1000)
    })
}

// 渲染用户名
function renderUser(){
// 从本地获取到用户
const user = localStorage.getItem('user')
document.querySelector('.username').innerHTML = user

}

// 添加请求拦截器
axios.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    // 获取token
    const token=localStorage.getItem('token')
    // 如果有token 就添加到请求头中
    if(token){
        // 在请求头统一设置token
        config.headers.Authorization = token
    }

    return config;
  },function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  });

  // 添加响应拦截器
axios.interceptors.response.use(function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    console.log('response',response.data)
    // 因为后台的数据嵌套比较深，可以通过响应拦截器进行数据剥离
    // response是后台响应的数据
    return response.data;
  }, function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 拿到token失效的错误信息
     // console.log(error)
    // 判断token是否失效 （超时/纂改）一旦失效会返回401状态码
    // 如果失效了 就要重新获取token
   if(error.response.status===401){
    localStorage.removeItem('user')
    localStorage.removeItem('token')
    // 跳转到登录页
    setTimeout(()=>{
        location.href='login.html'
    },1000)
   }

    // 对响应错误做点什么
    return Promise.reject(error);
  });




